//程序入口，主函数
#include "semantic_analysis.h"
#include "syntax.tab.h"

extern pNode root; //分析树根节点

extern int yylineno;
extern int yyparse();
extern void yyrestart(FILE*);

unsigned lexError = FALSE; //词法错误
unsigned synError = FALSE; //语法错误

int main(int argc, char** argv) {
    if (argc <= 1) {
        yyparse();
        return 1;
    }

    FILE* f = fopen(argv[1], "r");
    if (!f) {
        perror(argv[1]);
        return 1;
    }

    yyrestart(f);
    yyparse();
    if (!lexError && !synError) {
        table = initTable(); //创建符号表
        traverseTree(root); //遍历分析树
        deleteTable(table); //删除符号表
    }
    delNode(&root); //删除分析树
    return 0;
}
